/******************************************************************************
  _string.js : String조작 함수 라이브러리
  
  작성일 : 2001. 08. 14
  수정일 :  
 *****************************************************************************/
document.domain = "itopping.co.kr";


//----------------------------------------------------------------------------
// 왼쪽 공백문자만 없앰.
//----------------------------------------------------------------------------
function ltrim (str) {
  if (str == null) return "";

  var dest = str;
  var pos = 0;

  while (dest.charAt(pos) == " ") pos++;
  dest = dest.substring(pos, dest.length);

  return dest; 
 
}

//----------------------------------------------------------------------------
// 오른쪽 공백문자만 없앰
//----------------------------------------------------------------------------
function rtrim (str) {
  if (str == null) return "";

  var dest = str;
  var pos = dest.length-1;
  
  while (dest.charAt(pos) == " ") pos--;

  dest = dest.substring(0, pos+1);
  return dest;

}

//----------------------------------------------------------------------------
// 좌우 공백문자를 없앰.
//----------------------------------------------------------------------------
function trim (str) {
  if (str == null) return "";

  var dest = str;
  
  // 왼쪽 공백 제거
  var pos = 0;
  while (dest.charAt(pos) == " ") pos++;
  dest = dest.substring(pos, dest.length);

  // 오른쪽 공백 제거  
  pos = dest.length-1;
  while (dest.charAt(pos) == " ") pos--;
  dest = dest.substring(0, pos+1);

  return dest;
}

//----------------------------------------------------------------------------
// 공백문자를 모두 없앰.
//----------------------------------------------------------------------------
function trimall (str) {
  if (str == null) return "";

  var dest = str;
  
  for (; dest.indexOf(" ") != -1 ;) { 
     dest = dest.replace(" ","") ;
  } 
  return dest;
}

//----------------------------------------------------------------------------
// 특정문자 X를 Y로 모두 바꿈.
//----------------------------------------------------------------------------
function replaceall (str,x,y) {

  var dest =  "";
  var c;
  
  for (var i=0; i<str.length; i++) {
    if (str.substring(i,i+1) == x)
        c = y;
    else
        c = str.substring(i,i+1)
    dest = dest + c;
  }
  return dest
}

//----------------------------------------------------------------------------
// 주어진 string내에서 delemeter로 구분하여 idx만큼째 있는 것을 return
//----------------------------------------------------------------------------
function getToken(src, idx, delemeter) {
  var cnt = 0
  var tok = ""
  if (delemeter == null) var delemeter = "^";
  
  for (var i=0; i<src.length; i++) {
       if (src.substring(i,i+1) == delemeter)
           cnt++;
       else if (cnt == idx-1)
           tok = tok + src.substring(i,i+1);
           
       if (cnt >= idx) break;
  }
  return tok
}

//----------------------------------------------------------------------------
// 문자스트링의 글자수를 카운트한다.
//----------------------------------------------------------------------------
function countLength(textObj, counterObj, maxlen) { 
	
  if (textObj.value.length > maxlen) {
	  alert("입력값의 한계(" + maxlen + "자)를 넘었습니다.");		
	  return -1;
		//field.value = field.value.substring(0, maxlimit); 
  }
  else  {
      counterObj.value = maxlen - textObj.value.length;
      return counterObj.value;
  } 
} 


//----------------------------------------------------------------------------
// 문자스트링의 Byte수를 카운트한다.
//----------------------------------------------------------------------------
function countByte(textObj, counterObj, maxbyte) {
  var buf = "";
  var len = 0, tbyte = 0;
  var ch;
   
  buf = new String(textObj.value);
  len = len.length;
  
  for (var i=0; i<buf.length; i++) {
  	ch = buf.charAt(i);
  
  	if (escape(ch).length > 4) {
  		tbyte += 2;
  	}
  	else if (ch!='\r') {
  		tbyte++;
  	}
  }
  
  counterObj.value = tbyte;
  
  if (tbyte > maxbyte) {
      var reserve = tbyte - maxbyte;
      alert("입력값의 한계(" + maxbyte + "byte)를 넘었습니다.");		
  	  //cutText();
  	  return -1;
  }	
  else
      return tbyte;
}


/**
 * 문자스트링의 Byte수를 카운트한다.
 * @param textObjName 텍스트필드명(name 속성값)
 * @param maxBytes 최대 바이트 수
 * @param defaultBytes 2bytes문자일 경우 카운트할 byte수
 */
function countBytes(textObjName, maxBytes, defaultBytes, fieldName) {
	var buf = "";
	var len = 0, tbyte = 0;
	var ch;
	
	buf = new String(document.all(textObjName).value);
	len = len.length;
	
	for (var i=0; i<buf.length; i++) {
		ch = buf.charAt(i);
	
		if (escape(ch).length > 4) { // 4보다 크면 2bytes문자(한글 등)
			tbyte += defaultBytes; // 기본은 +2이나, 오라클이 UTF-8인코딩을 사용하면 한글을 3bytes로 저장한다.
		}
		else if (ch!='\r') {
			tbyte++;
		}
	}
	
	if (tbyte > maxBytes) {
	   var reserve = tbyte - maxBytes;
	   if(fieldName != null)
		   alert(fieldName + "이(가) 입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 3bytes입니다.");
	   else
		   alert("입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 3bytes입니다.");
	   
		  //cutText();
		  return -1;
	}	
	else
	   return tbyte;
}

function checkBytes(textObjName, maxBytes, defaultBytes, fieldName) {
	var buf = "";
	var len = 0, tbyte = 0;
	var ch;
	
	buf = new String(document.all(textObjName).value);
	len = len.length;
	
	for (var i=0; i<buf.length; i++) {
		ch = buf.charAt(i);
	
		if (escape(ch).length > 4) { // 4보다 크면 2bytes문자(한글 등)
			tbyte += defaultBytes; // 기본은 +2이나, 오라클이 UTF-8인코딩을 사용하면 한글을 3bytes로 저장한다.
		}
		else if (ch!='\r') {
			tbyte++;
		}
	}
	
	if (tbyte > maxBytes) {
	   var reserve = tbyte - maxBytes;
	   if(fieldName != null)
		   alert(fieldName + "이(가) 입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 " + defaultBytes + "bytes입니다.\n현재 길이는 " + tbyte + "bytes입니다.");
	   else
		   alert("입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 " + defaultBytes + "bytes입니다.\n현재 길이는 " + tbyte + "bytes입니다.");
	   
		  //cutText();
		  return false;
	}	
	else
	   return true;
}

function checkBytesByObj(textObj, maxBytes, defaultBytes, fieldName) {
	var buf = "";
	var len = 0, tbyte = 0;
	var ch;
	
	buf = new String(textObj.value);
	len = len.length;
	
	for (var i=0; i<buf.length; i++) {
		ch = buf.charAt(i);
	
		if (escape(ch).length > 4) { // 4보다 크면 2bytes문자(한글 등)
			tbyte += defaultBytes; // 기본은 +2이나, 오라클이 UTF-8인코딩을 사용하면 한글을 3bytes로 저장한다.
		}
		else if (ch!='\r') {
			tbyte++;
		}
	}
	
	if (tbyte > maxBytes) {
	   var reserve = tbyte - maxBytes;
	   if(fieldName != null)
		   alert(fieldName + "이(가) 입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 " + defaultBytes + "bytes입니다.\n현재 길이는 " + tbyte + "bytes입니다.");
	   else
		   alert("입력값의 한계(" + maxBytes + "bytes)를 넘었습니다.\n한글은 한문자에 " + defaultBytes + "bytes입니다.\n현재 길이는 " + tbyte + "bytes입니다.");
	   
		  //cutText();
		  return false;
	}	
	else
	   return true;
}
//----------------------------------------------------------------------------
// 콘텐츠 메타 정의 에서 사용
//----------------------------------------------------------------------------
function checkMaxBytes(target, maxBytes, defaultBytes, fieldName) {
	try {
		if (!checkBytes(target.name, maxBytes, defaultBytes, fieldName)) {
			target.value = "";
			target.focus();
		}
	} catch(e) {}
}


//----------------------------------------------------------------------------
// 입력값의 범위를 체크한다.
// ex : onchange="chkChar('1234567890abcdefghijklmnopqrstuvwxyz-ABCDEFGHIJKLMNOPQRSTUVWXYZ','Zip Code')
//----------------------------------------------------------------------------
function chkChar(charSet, title, obj) {
	if (obj == null) obj = window.event.srcElement;

	for (i=0; i<obj.value.length; i++) {
		if(charSet.indexOf(obj.value.charAt(i)) == -1) {
		   alert("["+ title + "] 항목에 잘못된 값이 입력되었습니다. ");
		   event.returnValue = false;
		   obj.focus();
		   return false;
		}
	}
	return true;
}


/* =============================================
Comment: 숫자 입력시 자동으로 앞에 '0'을 채워줌
Return : 
Usage  :
============================================= */
function fillZero( value, length ){

    var vlength = value.length;
	var zero = '';

	if (vlength == 0) return value;
	if (isNaN(value)) return value;

	for ( i = vlength; i < length; i++ ) {
		zero = zero + '0';
	}

	value = zero + value;

	return value; 
}

/* =============================================
Comment: 숫자에 콤마를 추가한다.
Return : 
Usage  : <input type="text" name="won" onkeypress="onlyNum();" style="ime-mode:disabled;"
				 onKeyUp="this.value=toCurrencyFormat(this.value)">
============================================= */
function toCurrencyFormat(s) {
	if(ltrim(s) == "0") {
		return ltrim(s);
	}
	
	var str  = s.replace(/\D/g,"");    
	var len  = str.length;
	var tmp  = "";
	var tm2  = "";
	var i    = 0;  

	while (str.charAt(i) == '0') i++;
	str = str.substring(i,len);
	len = str.length;
	if(len < 3) {
		return str;
	} else {
		var sit = len % 3;
		if (sit > 0) {
			tmp = tmp + str.substring(0,sit) + ',';
			len = len - sit;
		}
		while (len > 3) {
			tmp = tmp + str.substring(sit,sit+3) + ',';
			len = len - 3;
			sit = sit + 3;
		}
		tmp = tmp + str.substring(sit,sit+3) + tm2;
		str = tmp;
	}
	return str;
}


/* =============================================
Comment: 변수의 콤마를 제거한다.
Return : 
Usage  : 
============================================= */
function removeComma(val) {
	str = "";
	strr = val.split(",");
	for (r=0;r<strr.length;r++){
		str += strr[r];
	}
	return str;
}

// -->


/* =============================================
Comment: 문자열 str1중에서 str2를 str3로 변환.
Return : 
Usage  : 
============================================= */
function replace(str1, str2, str3) {
	var temp;
	var nPos = -1;
	temp = "" + str1;
	while ((nPos = temp.indexOf(str2)) > -1) {
		temp = "" + (temp.substring(0, nPos) + str3 + temp.substring((nPos + str2.length), temp.length));
	}

	return temp;
}


/* =============================================
Comment: str1의 문자열을 str2의 태그로 둘러쌓인 문자열로 반환한다.
Return : 
Usage  : 
============================================= */
function setTagValue(str1, str2) {
	var rValue = "";
	
	if(str1 != null && !isEmpty(str2)) {
		rValue = "<" + str2 + ">" + str1 + "</" + str2 + ">";
	}
	
	return rValue;
}


/* =============================================
Comment: str1의 문장중 str2의 태그로 둘러쌓인 문자열을 반환한다
Return : 
Usage  : 
============================================= */
function getTagValue(str1, str2) {
	var rValue = "";
	var n1=str1.indexOf("<"+str2+">");
    var n2=str1.indexOf("</"+str2+">");
    
    if (n1 >= 0 && n2 >= 0) {
		rValue = str1.substring(n1 + 2 + str2.length, n2);
    }
    
    return rValue
}


/* =============================================
Comment: str1의 문장중 str2의 태그로 둘러쌓인
		 문자열들을 배열로 반환한다
Return : 
Usage  : 
============================================= */
function getTagValues(str1, str2) {
	var arrEvent = new Array();
	var nFrom = 0;
	var nCnt = 0;
	
	while (true) {
        var n1=str1.indexOf("<"+str2+">",nFrom);
        var n2=str1.indexOf("</"+str2+">",nFrom);
        if (n1 >= 0 && n2 >= 0) {
			arrEvent[nCnt] = str1.substring(n1 + 2 + str2.length, n2);
        } else {
            break;
        }
        
        nFrom = n2 + 3 + str2.length;
        nCnt++;
    }
    
    return arrEvent;
}

function isNull(str) {
	if(str == null) 
		return true;
	
	if(str == "")
		return true;
	
	return false;
}

function isNullCheck(field, fieldName) {
	var str = document.all(field).value;
	if(str == null || str == "") {
		alert(fieldName + "을(를) 입력해주세요.");
		document.all(field).focus();
		return true;
	}
	
	return false;
}

/* =============================================
Comment: 문자열이 숫자이면 true를 리턴
Return :
Usage  :
============================================= */
function isNum(ohs) {
    if(isEmpty(ohs)) {
        return false;
    }
    if ((ohs.charAt(0)!='-') && (ohs.charAt(0)<'0'||ohs.charAt(0)>'9')) { //음수일경우
        return false;
    }
    for (var i=1; i<ohs.length; i++) {
        if (ohs.charAt(i)<'0' || ohs.charAt(i)>'9') {
            return false;
        }
    }

    return true;
}

/* =============================================
Comment: Key Event에서 숫자만 입력받게 함
Return :
Usage  :
============================================= */
function onlyNumCheck() {
	if ((event.keyCode<48) || (event.keyCode>57))
	{
		if ((event.keyCode != 46))
		{
			alert("숫자만 입력하세요.");
			event.returnValue=false;
		}
	}
	
	return true;
}

/* =============================================
Comment: 문자열이 비어 있으면 true를 리턴
Return :
Usage  :
============================================= */
function isEmpty(ohs) {
	if (ohs==null || ltrim(ohs)=="") {
		return true;
	} else {
		return false;
	}
}

function checkMinLength(field, min, fieldName) {
	if(document.all(field).value.length < min) {
		alert(fieldName + "을(를) " + min + "자 이상 입력해야 합니다.");
		document.all(field).focus();
		return false;
	}
	
	return true;
}

/**
 * 이메일 형식 체크
 * @param field 입력필드명(name)
 * @return 맞으면 true, 맞지 않으면 false
 */
function checkEmail(field) {
	re=/^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;
	//re=/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i;

	//alert(document.all(field).value);
	if(document.all(field).value.length<6 || !re.test(document.all(field).value)) {
		alert("메일형식이 맞지 않습니다.");
		return false;
	} 
	
	return true;
}


//파일 업로드 체크
function checkFile(file, fileExt) {
	var value = file.value;
	
	if(value == "" || value == null) 
		return true;
	
	var filename = value.substring(value.lastIndexOf("\\")+1);
	//alert(filename);
	var ext = filename.substring(filename.lastIndexOf(".") + 1);
	//alert(ext);

	if(fileExt.indexOf(ext.toLowerCase()) == -1 && ext != "") {
		alert(fileExt + " 파일이 아닙니다.");
		//file.select();
		//document.execCommand('Delete');
		return false;
	}

	return true;
}